/* Copyright 2018 JDCLOUD.COM

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

http:#www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.





Contact: 

NOTE: This class is auto generated by the jdcloud code generator program.
*/

 

#ifndef DetectionModel_h
#define DetectionModel_h

@interface TemplateOption :NSObject

/// 模板Id
@property (strong,nonatomic,nonnull)  NSString*  templateId;

/// 模板类型.1-默认模板  2-自定义模板
@property (strong,nonatomic,nonnull)  NSNumber*  templateType;


-(id) initWithTemplateId:(NSString*) templateId
    templateType:(NSNumber*)templateType;
-(NSMutableDictionary*) dictionary;

-(id) initWithDic:(NSDictionary*)dictionary;                    
@end
@interface RuleCounting :NSObject

/// 处于报警状态的规则个数  status:2
@property (strong,nonatomic,nonnull)  NSNumber*  alarmRuleCount;

/// 未启用的规则 数量
@property (strong,nonatomic,nonnull)  NSNumber*  disableRuleCount;

/// 处于正常状态的规则个数  status：1
@property (strong,nonatomic,nonnull)  NSNumber*  normalRuleCount;

/// 产品标识
@property (strong,nonatomic,nonnull)  NSString*  product;

/// 监控规则 总数
@property (strong,nonatomic,nonnull)  NSNumber*  totalRuleCount;

/// 处于数据不足状态的规则 个数  status:4
@property (strong,nonatomic,nonnull)  NSNumber*  unknownRuleCount;


-(id) initWithAlarmRuleCount:(NSNumber*) alarmRuleCount
    disableRuleCount:(NSNumber*)disableRuleCount
    normalRuleCount:(NSNumber*)normalRuleCount
    product:(NSString*)product
    totalRuleCount:(NSNumber*)totalRuleCount
    unknownRuleCount:(NSNumber*)unknownRuleCount;
-(NSMutableDictionary*) dictionary;

-(id) initWithDic:(NSDictionary*)dictionary;                    
@end
@interface SiteMonitorFtpOption :NSObject

/// 登陆类型，可选值anonymous（匿名登陆）、login（身份校验）
@property (strong,nonatomic,nonnull)  NSString*  loginType;

/// Passwd
@property (strong,nonatomic,nonnull)  NSString*  passwd;

/// Timeout
@property (strong,nonatomic,nonnull)  NSNumber*  timeout;

/// User
@property (strong,nonatomic,nonnull)  NSString*  user;


-(id) initWithLoginType:(NSString*) loginType
    passwd:(NSString*)passwd
    timeout:(NSNumber*)timeout
    user:(NSString*)user;
-(NSMutableDictionary*) dictionary;

-(id) initWithDic:(NSDictionary*)dictionary;                    
@end
@interface SiteMonitorPingOption :NSObject

/// 包数，默认为20
@property (strong,nonatomic,nonnull)  NSNumber*  packetCount;

/// Timeout
@property (strong,nonatomic,nonnull)  NSNumber*  timeout;


-(id) initWithPacketCount:(NSNumber*) packetCount
    timeout:(NSNumber*)timeout;
-(NSMutableDictionary*) dictionary;

-(id) initWithDic:(NSDictionary*)dictionary;                    
@end
@interface RuleState :NSObject

/// 资源id
@property (strong,nonatomic,nonnull)  NSString*  resourceId;

/// 规则个数
@property (strong,nonatomic,nonnull)  NSNumber*  ruleCount;

/// 资源的规则状态。1：正常、 2：报警、4：数据不足 -1:没有规则 -2:未启用
@property (strong,nonatomic,nonnull)  NSNumber*  state;


-(id) initWithResourceId:(NSString*) resourceId
    ruleCount:(NSNumber*)ruleCount
    state:(NSNumber*)state;
-(NSMutableDictionary*) dictionary;

-(id) initWithDic:(NSDictionary*)dictionary;                    
@end
@interface SiteMonitorHttpOption :NSObject

/// Cookie
@property (strong,nonatomic,nonnull)  NSMutableDictionary<NSString*,NSString*>*  cookie;

/// Header
@property (strong,nonatomic,nonnull)  NSMutableDictionary<NSString*,NSString*>*  header;

/// 请求方法，可选值：GET、POST、HEAD
@property (strong,nonatomic,nonnull)  NSString*  method;

/// 请求内容
@property (strong,nonatomic,nonnull)  NSString*  reqContent;

/// 返回校验内容
@property (strong,nonatomic,nonnull)  NSString*  resCheck;

/// 返回校验方式，可选值：match、notmatch
@property (strong,nonatomic,nonnull)  NSString*  resCheckType;


-(id) initWithCookie:(NSMutableDictionary<NSString*,NSString*>*) cookie
    header:(NSMutableDictionary<NSString*,NSString*>*)header
    method:(NSString*)method
    reqContent:(NSString*)reqContent
    resCheck:(NSString*)resCheck
    resCheckType:(NSString*)resCheckType;
-(NSMutableDictionary*) dictionary;

-(id) initWithDic:(NSDictionary*)dictionary;                    
@end
@interface DetectionTagFilter :NSObject

/// Tag键
@property (strong,nonatomic,nonnull)  NSString*  key;

/// Tag值
@property (strong,nonatomic,nonnull)  NSArray<NSString*>*  values;


-(id) initWithKey:(NSString*) key
    values:(NSArray<NSString*>*)values;
-(NSMutableDictionary*) dictionary;

-(id) initWithDic:(NSDictionary*)dictionary;                    
@end
@interface ResourceItem :NSObject

/// 资源所属的region
@property (strong,nonatomic,nonnull)  NSString*  region;

/// 资源id
@property (strong,nonatomic,nonnull)  NSString*  resourceId;


-(id) initWithRegion:(NSString*) region
    resourceId:(NSString*)resourceId;
-(NSMutableDictionary*) dictionary;

-(id) initWithDic:(NSDictionary*)dictionary;                    
@end
@interface NoticeLevel :NSObject

/// 是否为用户自己定义的级别，自定义(true) or 固定(false)
@property (strong,nonatomic,nonnull)  NSNumber*  custom;

/// 报警级别以及对应的阈值，是一个map[string]float64对象。key:common(一般)、critical(严重)、 fatal(紧急),value:各报警级别对应的阀值，要符合operation参数对应的递进关系。 eg: &quot;levels&quot;:{&quot;common&quot;:1000,&quot;critical&quot;:10000,&quot;fatal&quot;:15000}
@property (strong,nonatomic,nonnull)  NSMutableDictionary<NSString*,NSNumber*>*  levels;


-(id) initWithCustom:(NSNumber*) custom
    levels:(NSMutableDictionary<NSString*,NSNumber*>*)levels;
-(NSMutableDictionary*) dictionary;

-(id) initWithDic:(NSDictionary*)dictionary;                    
@end
@interface UpdateWebHookOut :NSObject

/// Success
@property (strong,nonatomic,nonnull)  NSNumber*  success;


-(id) initWithSuccess:(NSNumber*) success;
-(NSMutableDictionary*) dictionary;

-(id) initWithDic:(NSDictionary*)dictionary;                    
@end
@interface SiteMonitorUdpOption :NSObject

/// ReqContent
@property (strong,nonatomic,nonnull)  NSString*  reqContent;

/// ReqContentType
@property (strong,nonatomic,nonnull)  NSString*  reqContentType;

/// ResCheck
@property (strong,nonatomic,nonnull)  NSString*  resCheck;

/// ResCheckType
@property (strong,nonatomic,nonnull)  NSString*  resCheckType;

/// Timeout
@property (strong,nonatomic,nonnull)  NSNumber*  timeout;


-(id) initWithReqContent:(NSString*) reqContent
    reqContentType:(NSString*)reqContentType
    resCheck:(NSString*)resCheck
    resCheckType:(NSString*)resCheckType
    timeout:(NSNumber*)timeout;
-(NSMutableDictionary*) dictionary;

-(id) initWithDic:(NSDictionary*)dictionary;                    
@end
@interface Location :NSObject

/// Sloc
@property (strong,nonatomic,nonnull)  NSString*  sloc;

/// SlocName
@property (strong,nonatomic,nonnull)  NSString*  slocName;

/// IsIpv6
@property (strong,nonatomic,nonnull)  NSNumber*  isIpv6;


-(id) initWithSloc:(NSString*) sloc
    slocName:(NSString*)slocName
    isIpv6:(NSNumber*)isIpv6;
-(NSMutableDictionary*) dictionary;

-(id) initWithDic:(NSDictionary*)dictionary;                    
@end
@interface SiteMonitorSmtpOption :NSObject

/// 用户密码
@property (strong,nonatomic,nonnull)  NSString*  passwd;

/// 协议类型，可选值：smtp、smtps
@property (strong,nonatomic,nonnull)  NSString*  protocol;

/// Timeout
@property (strong,nonatomic,nonnull)  NSNumber*  timeout;

/// 用户名
@property (strong,nonatomic,nonnull)  NSString*  user;


-(id) initWithPasswd:(NSString*) passwd
    protocol:(NSString*)protocol
    timeout:(NSNumber*)timeout
    user:(NSString*)user;
-(NSMutableDictionary*) dictionary;

-(id) initWithDic:(NSDictionary*)dictionary;                    
@end
@interface SiteMonitorDnsOption :NSObject

/// DNS查询类型，可选值：A、MX、NS、CNAME、TXT、ANY，不填默认为A
@property (strong,nonatomic,nonnull)  NSString*  checkType;

/// 期望解析别名，多个之间用逗号,分割
@property (strong,nonatomic,nonnull)  NSString*  expectAlias;

/// 期望解析ip，多个之间用逗号,分割
@property (strong,nonatomic,nonnull)  NSString*  expectIP;

/// DNS服务器
@property (strong,nonatomic,nonnull)  NSString*  server;

/// Timeout
@property (strong,nonatomic,nonnull)  NSNumber*  timeout;


-(id) initWithCheckType:(NSString*) checkType
    expectAlias:(NSString*)expectAlias
    expectIP:(NSString*)expectIP
    server:(NSString*)server
    timeout:(NSNumber*)timeout;
-(NSMutableDictionary*) dictionary;

-(id) initWithDic:(NSDictionary*)dictionary;                    
@end
@interface SiteMonitorSource :NSObject

/// Sisp
@property (strong,nonatomic,nonnull)  NSString*  sisp;

/// SispName
@property (strong,nonatomic,nonnull)  NSString*  sispName;

/// Sloc
@property (strong,nonatomic,nonnull)  NSString*  sloc;

/// SlocName
@property (strong,nonatomic,nonnull)  NSString*  slocName;


-(id) initWithSisp:(NSString*) sisp
    sispName:(NSString*)sispName
    sloc:(NSString*)sloc
    slocName:(NSString*)slocName;
-(NSMutableDictionary*) dictionary;

-(id) initWithDic:(NSDictionary*)dictionary;                    
@end
@interface SiteMonitorTcpOption :NSObject

/// 请求内容
@property (strong,nonatomic,nonnull)  NSString*  reqContent;

/// 请求内容类型，可选值text（文本）、hex（十六进制）
@property (strong,nonatomic,nonnull)  NSString*  reqContentType;

/// 返回校验内容
@property (strong,nonatomic,nonnull)  NSString*  resCheck;

/// 返回内容类型，可选值text（文本）、hex（十六进制）
@property (strong,nonatomic,nonnull)  NSString*  resCheckType;

/// Timeout
@property (strong,nonatomic,nonnull)  NSNumber*  timeout;


-(id) initWithReqContent:(NSString*) reqContent
    reqContentType:(NSString*)reqContentType
    resCheck:(NSString*)resCheck
    resCheckType:(NSString*)resCheckType
    timeout:(NSNumber*)timeout;
-(NSMutableDictionary*) dictionary;

-(id) initWithDic:(NSDictionary*)dictionary;                    
@end
@interface SiteMonitorPop3Option :NSObject

/// Passwd
@property (strong,nonatomic,nonnull)  NSString*  passwd;

/// 协议类型，可选值：pop3、pop3s
@property (strong,nonatomic,nonnull)  NSString*  protocol;

/// Timeout
@property (strong,nonatomic,nonnull)  NSNumber*  timeout;

/// User
@property (strong,nonatomic,nonnull)  NSString*  user;


-(id) initWithPasswd:(NSString*) passwd
    protocol:(NSString*)protocol
    timeout:(NSNumber*)timeout
    user:(NSString*)user;
-(NSMutableDictionary*) dictionary;

-(id) initWithDic:(NSDictionary*)dictionary;                    
@end
@interface DetectionFilter :NSObject

/// Name
@property (strong,nonatomic,nonnull)  NSString*  name;

/// Values
@property (strong,nonatomic,nonnull)  NSArray<NSString*>*  values;


-(id) initWithName:(NSString*) name
    values:(NSArray<NSString*>*)values;
-(NSMutableDictionary*) dictionary;

-(id) initWithDic:(NSDictionary*)dictionary;                    
@end
@interface KeyValue :NSObject

/// key
@property (strong,nonatomic,nonnull)  NSString*  key;

/// value
@property (strong,nonatomic,nonnull)  NSString*  value;


-(id) initWithKey:(NSString*) key
    value:(NSString*)value;
-(NSMutableDictionary*) dictionary;

-(id) initWithDic:(NSDictionary*)dictionary;                    
@end
@interface DescribedNoticeContacts :NSObject

/// 联系人ID
@property (strong,nonatomic,nonnull)  NSNumber*  referenceId;

/// 联系人类型。 0 - 联系人分组id， 1 - 联系人id
@property (strong,nonatomic,nonnull)  NSNumber*  referenceType;


-(id) initWithReferenceId:(NSNumber*) referenceId
    referenceType:(NSNumber*)referenceType;
-(NSMutableDictionary*) dictionary;

-(id) initWithDic:(NSDictionary*)dictionary;                    
@end
@interface DataPoint :NSObject

/// Timestamp
@property (strong,nonatomic,nonnull)  NSNumber*  timestamp;

/// Value
@property (strong,nonatomic,nonnull)  NSObject*  value;


-(id) initWithTimestamp:(NSNumber*) timestamp
    value:(NSObject*)value;
-(NSMutableDictionary*) dictionary;

-(id) initWithDic:(NSDictionary*)dictionary;                    
@end
@interface Metric :NSObject

/// Aggregator
@property (strong,nonatomic,nonnull)  NSString*  aggregator;

/// CalculateUnit
@property (strong,nonatomic,nonnull)  NSString*  calculateUnit;

/// MetricValue
@property (strong,nonatomic,nonnull)  NSString*  metricValue;

/// MetricName
@property (strong,nonatomic,nonnull)  NSString*  metricName;

/// Period
@property (strong,nonatomic,nonnull)  NSString*  period;


-(id) initWithAggregator:(NSString*) aggregator
    calculateUnit:(NSString*)calculateUnit
    metricValue:(NSString*)metricValue
    metricName:(NSString*)metricName
    period:(NSString*)period;
-(NSMutableDictionary*) dictionary;

-(id) initWithDic:(NSDictionary*)dictionary;                    
@end
@interface Tag :NSObject

/// TagKey
@property (strong,nonatomic,nonnull)  NSString*  tagKey;

/// TagValue
@property (strong,nonatomic,nonnull)  NSString*  tagValue;


-(id) initWithTagKey:(NSString*) tagKey
    tagValue:(NSString*)tagValue;
-(NSMutableDictionary*) dictionary;

-(id) initWithDic:(NSDictionary*)dictionary;                    
@end
@interface ProbeTaskEnableSpec :NSObject

/// 默认：禁用； true：启用，false：禁用
@property (strong,nonatomic,nonnull)  NSNumber*  enabled;

/// 要启用或禁用的探测任务的task_id列表，列表长度[1，100)
@property (strong,nonatomic,nonnull)  NSArray<NSString*>*  taskId;


-(id) initWithEnabled:(NSNumber*) enabled
    taskId:(NSArray<NSString*>*)taskId;
-(NSMutableDictionary*) dictionary;

-(id) initWithDic:(NSDictionary*)dictionary;                    
@end
@interface Event :NSObject

/// 探测结果 1:探测成功  2：探测失败  3：探测超时
@property (strong,nonatomic,nonnull)  NSNumber*  probeResult;

/// 插件状态 1：正常  2：异常
@property (strong,nonatomic,nonnull)  NSNumber*  probeStatus;

/// 时间戳
@property (strong,nonatomic,nonnull)  NSNumber*  timestamp;


-(id) initWithProbeResult:(NSNumber*) probeResult
    probeStatus:(NSNumber*)probeStatus
    timestamp:(NSNumber*)timestamp;
-(NSMutableDictionary*) dictionary;

-(id) initWithDic:(NSDictionary*)dictionary;                    
@end
@interface ProbeInfo :NSObject

/// 探测源的所在主机名称
@property (strong,nonatomic,nonnull)  NSString*  name;

/// 探测源的内网ip
@property (strong,nonatomic,nonnull)  NSString*  privateIp;

/// 探测结果,缺点返回null,对应前端显示 &quot;--&quot; ,1:探测正常，2：探测失败，3：探测超时
@property (strong,nonatomic,nonnull)  NSNumber*  probeResult;

/// 插件状态，  1：正常，2：异常
@property (strong,nonatomic,nonnull)  NSNumber*  probeStatus;

/// 探测源的公网ip
@property (strong,nonatomic,nonnull)  NSString*  publicIp;

/// 探测目标状态，1：正常，2：异常(探测失败、探测超时)，缺点返回null,对应前端显示 &quot;--&quot;
@property (strong,nonatomic,nonnull)  NSNumber*  targetStatus;

/// 探测源主机的uuid
@property (strong,nonatomic,nonnull)  NSString*  uuid;

/// 云主机状态，对应云主机的状态,当找不到云主机，状态为&quot;unExist&quot;
@property (strong,nonatomic,nonnull)  NSString*  vmStatus;


-(id) initWithName:(NSString*) name
    privateIp:(NSString*)privateIp
    probeResult:(NSNumber*)probeResult
    probeStatus:(NSNumber*)probeStatus
    publicIp:(NSString*)publicIp
    targetStatus:(NSNumber*)targetStatus
    uuid:(NSString*)uuid
    vmStatus:(NSString*)vmStatus;
-(NSMutableDictionary*) dictionary;

-(id) initWithDic:(NSDictionary*)dictionary;                    
@end
@interface WebHookOption :NSObject

/// 回调content 注：仅webHookUrl和webHookProtocol均不为空时，才会创建webHook
@property (strong,nonatomic,nonnull)  NSString*  webHookContent;

/// webHook协议
@property (strong,nonatomic,nonnull)  NSString*  webHookProtocol;

/// 回调secret，用户请求签名，防伪造
@property (strong,nonatomic,nonnull)  NSString*  webHookSecret;

/// 回调url
@property (strong,nonatomic,nonnull)  NSString*  webHookUrl;


-(id) initWithWebHookContent:(NSString*) webHookContent
    webHookProtocol:(NSString*)webHookProtocol
    webHookSecret:(NSString*)webHookSecret
    webHookUrl:(NSString*)webHookUrl;
-(NSMutableDictionary*) dictionary;

-(id) initWithDic:(NSDictionary*)dictionary;                    
@end
@interface NoticeOption :NSObject

/// 生效截止时间，默认值:23:59
@property (strong,nonatomic,nonnull)  NSString*  effectiveIntervalEnd;

/// 生效起始时间，默认值:00:00
@property (strong,nonatomic,nonnull)  NSString*  effectiveIntervalStart;

/// 通知条件 1-告警 2-数据不足3-告警恢复
@property (strong,nonatomic,nonnull)  NSArray<NSNumber*>*  noticeCondition;

/// 通知沉默周期,单位:分钟，默认值：24小时,目前支持的取值“24小时、12小时、6小时、3小时、1小时、30分钟、15分钟、10分钟、5分钟”
@property (strong,nonatomic,nonnull)  NSNumber*  noticePeriod;

/// 通知方法    1-短信 2-邮件
@property (strong,nonatomic,nonnull)  NSArray<NSNumber*>*  noticeWay;


-(id) initWithEffectiveIntervalEnd:(NSString*) effectiveIntervalEnd
    effectiveIntervalStart:(NSString*)effectiveIntervalStart
    noticeCondition:(NSArray<NSNumber*>*)noticeCondition
    noticePeriod:(NSNumber*)noticePeriod
    noticeWay:(NSArray<NSNumber*>*)noticeWay;
-(NSMutableDictionary*) dictionary;

-(id) initWithDic:(NSDictionary*)dictionary;                    
@end
@interface BaseContact :NSObject

/// 联系人id。  注：ReferenceType&#x3D;2时，联系人id请填0
@property (strong,nonatomic,nonnull)  NSNumber*  referenceId;

/// 联系人id类型：0,联系人分组id;1,联系人id，2，pin帐号主联系人
@property (strong,nonatomic,nonnull)  NSNumber*  referenceType;


-(id) initWithReferenceId:(NSNumber*) referenceId
    referenceType:(NSNumber*)referenceType;
-(NSMutableDictionary*) dictionary;

-(id) initWithDic:(NSDictionary*)dictionary;                    
@end
@interface Probe :NSObject

/// 探测源所在云主机内网ip
@property (strong,nonatomic,nonnull)  NSString*  privateIp;

/// 探测源所在云主机公网ip
@property (strong,nonatomic,nonnull)  NSString*  publicIp;

/// 探测源所在region
@property (strong,nonatomic,nonnull)  NSString*  region;

/// 探测源所在云主机的uuid
@property (strong,nonatomic,nonnull)  NSString*  uuid;


-(id) initWithPrivateIp:(NSString*) privateIp
    publicIp:(NSString*)publicIp
    region:(NSString*)region
    uuid:(NSString*)uuid;
-(NSMutableDictionary*) dictionary;

-(id) initWithDic:(NSDictionary*)dictionary;                    
@end
@interface EnableSiteMonitorReqItem :NSObject

/// Enabled
@property (strong,nonatomic,nonnull)  NSString*  enabled;

/// Id
@property (strong,nonatomic,nonnull)  NSString*  idValue;


-(id) initWithEnabled:(NSString*) enabled
    idValue:(NSString*)idValue;
-(NSMutableDictionary*) dictionary;

-(id) initWithDic:(NSDictionary*)dictionary;                    
@end
@interface Resource :NSObject

/// Name
@property (strong,nonatomic,nonnull)  NSString*  name;

/// RegionId
@property (strong,nonatomic,nonnull)  NSString*  regionId;

/// ResourceId
@property (strong,nonatomic,nonnull)  NSString*  resourceId;


-(id) initWithName:(NSString*) name
    regionId:(NSString*)regionId
    resourceId:(NSString*)resourceId;
-(NSMutableDictionary*) dictionary;

-(id) initWithDic:(NSDictionary*)dictionary;                    
@end
@interface RuleMetricDetail :NSObject

/// 指标的计算单位，比如bit/s、%、k等
@property (strong,nonatomic,nonnull)  NSString*  calculateUnit;

/// 维度标识
@property (strong,nonatomic,nonnull)  NSString*  dimension;

/// 监控项唯一标识，可根据DescribeMetricsForCreateAlarm接口查询各产品线可用的监控项（创建规则时使用Metric字段）。格式：metric:downsample
@property (strong,nonatomic,nonnull)  NSString*  metric;

/// 监控项名称
@property (strong,nonatomic,nonnull)  NSString*  metricName;

/// 产品标识
@property (strong,nonatomic,nonnull)  NSString*  product;

/// 产品线标识
@property (strong,nonatomic,nonnull)  NSString*  serviceCode;


-(id) initWithCalculateUnit:(NSString*) calculateUnit
    dimension:(NSString*)dimension
    metric:(NSString*)metric
    metricName:(NSString*)metricName
    product:(NSString*)product
    serviceCode:(NSString*)serviceCode;
-(NSMutableDictionary*) dictionary;

-(id) initWithDic:(NSDictionary*)dictionary;                    
@end
@interface AgentStatus :NSObject

/// agent id
@property (strong,nonatomic,nonnull)  NSString*  uuid;

/// agent状态。1-正常 2-异常、
@property (strong,nonatomic,nonnull)  NSNumber*  value;


-(id) initWithUuid:(NSString*) uuid
    value:(NSNumber*)value;
-(NSMutableDictionary*) dictionary;

-(id) initWithDic:(NSDictionary*)dictionary;                    
@end
@interface Err :NSObject

/// Code
@property (strong,nonatomic,nonnull)  NSNumber*  code;

/// Details
@property (strong,nonatomic,nonnull)  NSObject*  details;

/// Message
@property (strong,nonatomic,nonnull)  NSString*  message;

/// Status
@property (strong,nonatomic,nonnull)  NSString*  status;


-(id) initWithCode:(NSNumber*) code
    details:(NSObject*)details
    message:(NSString*)message
    status:(NSString*)status;
-(NSMutableDictionary*) dictionary;

-(id) initWithDic:(NSDictionary*)dictionary;                    
@end
@interface NoticeReceiver :NSObject

/// Email
@property (strong,nonatomic,nonnull)  NSString*  email;

/// Mobile
@property (strong,nonatomic,nonnull)  NSString*  mobile;

/// PersonId
@property (strong,nonatomic,nonnull)  NSNumber*  personId;

/// Pin
@property (strong,nonatomic,nonnull)  NSString*  pin;

/// UserName
@property (strong,nonatomic,nonnull)  NSString*  userName;


-(id) initWithEmail:(NSString*) email
    mobile:(NSString*)mobile
    personId:(NSNumber*)personId
    pin:(NSString*)pin
    userName:(NSString*)userName;
-(NSMutableDictionary*) dictionary;

-(id) initWithDic:(NSDictionary*)dictionary;                    
@end
@interface UpdateWebHookSpec :NSObject

/// 是否启用, 1表示启用webHook，0表示禁用webHook，默认为1
@property (strong,nonatomic,nonnull)  NSNumber*  active;

/// webHook content
@property (strong,nonatomic,nonnull)  NSString*  content;

/// webHook 协议,http或者https
@property (strong,nonatomic,nonnull)  NSString*  protocol;

/// webHook secret，用户请求签名，防伪造
@property (strong,nonatomic,nonnull)  NSString*  secret;

/// webHook url
@property (strong,nonatomic,nonnull)  NSString*  url;


-(id) initWithActive:(NSNumber*) active
    content:(NSString*)content
    protocol:(NSString*)protocol
    secret:(NSString*)secret
    url:(NSString*)url;
-(NSMutableDictionary*) dictionary;

-(id) initWithDic:(NSDictionary*)dictionary;                    
@end
@interface TasksInfo :NSObject

/// task类型
@property (strong,nonatomic,nonnull)  NSString*  confType;

/// UID
@property (strong,nonatomic,nonnull)  NSString*  confUID;

/// 任务内容
@property (strong,nonatomic,nonnull)  NSObject*  content;

/// 采集间隔
@property (strong,nonatomic,nonnull)  NSNumber*  interval;

/// meta信息，类型为map[string]string
@property (strong,nonatomic,nonnull)  NSMutableDictionary<NSString*,NSString*>*  meta;


-(id) initWithConfType:(NSString*) confType
    confUID:(NSString*)confUID
    content:(NSObject*)content
    interval:(NSNumber*)interval
    meta:(NSMutableDictionary<NSString*,NSString*>*)meta;
-(NSMutableDictionary*) dictionary;

-(id) initWithDic:(NSDictionary*)dictionary;                    
@end
@interface TaskInfo :NSObject

/// 探测异常数  ，null代表缺值。只统计探测失败，超时的个数。
@property (strong,nonatomic,nonnull)  NSNumber*  abnormalCount;

/// task的探测地址
@property (strong,nonatomic,nonnull)  NSString*  address;

/// 该task状态[true:被删除]
@property (strong,nonatomic,nonnull)  NSNumber*  deleted;

/// 任务状态[false：己禁用，true：己启用]
@property (strong,nonatomic,nonnull)  NSNumber*  enabled;

/// task名称
@property (strong,nonatomic,nonnull)  NSString*  name;

/// task的可用率
@property (strong,nonatomic,nonnull)  NSNumber*  probeAvailability;

/// 该task的探测源个数
@property (strong,nonatomic,nonnull)  NSNumber*  probeCount;

/// task的探测类型，1：http，2：telnet
@property (strong,nonatomic,nonnull)  NSNumber*  probeType;

/// task的探测平均响应时间
@property (strong,nonatomic,nonnull)  NSNumber*  responseTime;

/// task的id
@property (strong,nonatomic,nonnull)  NSString*  taskId;


-(id) initWithAbnormalCount:(NSNumber*) abnormalCount
    address:(NSString*)address
    deleted:(NSNumber*)deleted
    enabled:(NSNumber*)enabled
    name:(NSString*)name
    probeAvailability:(NSNumber*)probeAvailability
    probeCount:(NSNumber*)probeCount
    probeType:(NSNumber*)probeType
    responseTime:(NSNumber*)responseTime
    taskId:(NSString*)taskId;
-(NSMutableDictionary*) dictionary;

-(id) initWithDic:(NSDictionary*)dictionary;                    
@end
@interface TagsOption :NSObject

/// 操作项(多个tagFilter之间关关系)默认是or
@property (strong,nonatomic,nonnull)  NSString*  operatorValue;

/// 资源标签,对所有符合该标签的资源设置报警规则，对于新加入该标签的资源自动生效
@property (strong,nonatomic,nonnull)  NSArray<DetectionTagFilter*>*  tags;


-(id) initWithOperator:(NSString*) operatorValue
    tags:(NSArray<DetectionTagFilter*>*)tags;
-(NSMutableDictionary*) dictionary;

-(id) initWithDic:(NSDictionary*)dictionary;                    
@end
@interface BasicRuleDetail :NSObject

/// 指标的计算单位，比如bit/s、%、k等
@property (strong,nonatomic,nonnull)  NSString*  calculateUnit;

/// 统计方法，必须与定义的metric一致，可选值列表：avg,sum,max,min
@property (strong,nonatomic,nonnull)  NSString*  calculation;

/// 降采样函数
@property (strong,nonatomic,nonnull)  NSString*  downSample;

/// 监控项唯一标识，可根据DescribeMetricsForCreateAlarm接口查询各产品线可用的监控项（创建规则时使用Metric字段）。格式：metric:downsample
@property (strong,nonatomic,nonnull)  NSString*  metric;

/// 监控项名称
@property (strong,nonatomic,nonnull)  NSString*  metricName;

/// NoticeLevel
@property (strong,nonatomic,nonnull)  NoticeLevel*  noticeLevel;

/// 报警比较符，只能为以下几种lte(&lt;&#x3D;),lt(&lt;),gt(&gt;),gte(&gt;&#x3D;),eq(&#x3D;&#x3D;),ne(!&#x3D;)
@property (strong,nonatomic,nonnull)  NSString*  operation;

/// 查询指标的周期，单位为分钟,目前支持的取值：1,2，5，10,15，30，60
@property (strong,nonatomic,nonnull)  NSNumber*  period;

/// 报警阈值，目前只开放数值类型功能
@property (strong,nonatomic,nonnull)  NSNumber*  threshold;

/// 连续探测几次都满足阈值条件时报警，可选值:1,2,3,5,10,15,30,60
@property (strong,nonatomic,nonnull)  NSNumber*  times;


-(id) initWithCalculateUnit:(NSString*) calculateUnit
    calculation:(NSString*)calculation
    downSample:(NSString*)downSample
    metric:(NSString*)metric
    metricName:(NSString*)metricName
    noticeLevel:(NoticeLevel*)noticeLevel
    operation:(NSString*)operation
    period:(NSNumber*)period
    threshold:(NSNumber*)threshold
    times:(NSNumber*)times;
-(NSMutableDictionary*) dictionary;

-(id) initWithDic:(NSDictionary*)dictionary;                    
@end
@interface IspLocation :NSObject

/// Sisp
@property (strong,nonatomic,nonnull)  NSString*  sisp;

/// SispName
@property (strong,nonatomic,nonnull)  NSString*  sispName;

/// Slocs
@property (strong,nonatomic,nonnull)  NSArray<Location*>*  slocs;


-(id) initWithSisp:(NSString*) sisp
    sispName:(NSString*)sispName
    slocs:(NSArray<Location*>*)slocs;
-(NSMutableDictionary*) dictionary;

-(id) initWithDic:(NSDictionary*)dictionary;                    
@end
@interface TestSiteMonitorSpec :NSObject

/// 地址
@property (strong,nonatomic,nonnull)  NSString*  address;

/// AdvanceChecked
@property (strong,nonatomic,nonnull)  NSString*  advanceChecked;

/// CreatedTime
@property (strong,nonatomic,nonnull)  NSNumber*  createdTime;

/// 探测频率
@property (strong,nonatomic,nonnull)  NSNumber*  cycle;

/// DefaultSource
@property (strong,nonatomic,nonnull)  NSString*  defaultSource;

/// DnsOption
@property (strong,nonatomic,nonnull)  SiteMonitorDnsOption*  dnsOption;

/// Enabled
@property (strong,nonatomic,nonnull)  NSString*  enabled;

/// FtpOption
@property (strong,nonatomic,nonnull)  SiteMonitorFtpOption*  ftpOption;

/// HawkeyeId
@property (strong,nonatomic,nonnull)  NSNumber*  hawkeyeId;

/// HttpOption
@property (strong,nonatomic,nonnull)  SiteMonitorHttpOption*  httpOption;

/// Id
@property (strong,nonatomic,nonnull)  NSString*  idValue;

/// IsDeleted
@property (strong,nonatomic,nonnull)  NSString*  isDeleted;

/// 任务名称
@property (strong,nonatomic,nonnull)  NSString*  name;

/// Pin
@property (strong,nonatomic,nonnull)  NSString*  pin;

/// PingOption
@property (strong,nonatomic,nonnull)  SiteMonitorPingOption*  pingOption;

/// Pop3Option
@property (strong,nonatomic,nonnull)  SiteMonitorPop3Option*  pop3Option;

/// 端口
@property (strong,nonatomic,nonnull)  NSString*  port;

/// SmtpOption
@property (strong,nonatomic,nonnull)  SiteMonitorSmtpOption*  smtpOption;

/// 探测源
@property (strong,nonatomic,nonnull)  NSArray<SiteMonitorSource*>*  source;

/// Stats
@property (strong,nonatomic,nonnull)  NSMutableDictionary<NSString*,NSObject*>*  stats;

/// 任务类型，可选值：HTTP、PING 、TCP 、UDP、DNS、SMTP、POP3和FTP
@property (strong,nonatomic,nonnull)  NSString*  taskType;

/// TcpOption
@property (strong,nonatomic,nonnull)  SiteMonitorTcpOption*  tcpOption;

/// UdpOption
@property (strong,nonatomic,nonnull)  SiteMonitorUdpOption*  udpOption;

/// UpdatedTime
@property (strong,nonatomic,nonnull)  NSNumber*  updatedTime;


-(id) initWithAddress:(NSString*) address
    advanceChecked:(NSString*)advanceChecked
    createdTime:(NSNumber*)createdTime
    cycle:(NSNumber*)cycle
    defaultSource:(NSString*)defaultSource
    dnsOption:(SiteMonitorDnsOption*)dnsOption
    enabled:(NSString*)enabled
    ftpOption:(SiteMonitorFtpOption*)ftpOption
    hawkeyeId:(NSNumber*)hawkeyeId
    httpOption:(SiteMonitorHttpOption*)httpOption
    idValue:(NSString*)idValue
    isDeleted:(NSString*)isDeleted
    name:(NSString*)name
    pin:(NSString*)pin
    pingOption:(SiteMonitorPingOption*)pingOption
    pop3Option:(SiteMonitorPop3Option*)pop3Option
    port:(NSString*)port
    smtpOption:(SiteMonitorSmtpOption*)smtpOption
    source:(NSArray<SiteMonitorSource*>*)source
    stats:(NSMutableDictionary<NSString*,NSObject*>*)stats
    taskType:(NSString*)taskType
    tcpOption:(SiteMonitorTcpOption*)tcpOption
    udpOption:(SiteMonitorUdpOption*)udpOption
    updatedTime:(NSNumber*)updatedTime;
-(NSMutableDictionary*) dictionary;

-(id) initWithDic:(NSDictionary*)dictionary;                    
@end
@interface SiteMonitor :NSObject

/// Address
@property (strong,nonatomic,nonnull)  NSString*  address;

/// AdvanceChecked
@property (strong,nonatomic,nonnull)  NSString*  advanceChecked;

/// CreatedTime
@property (strong,nonatomic,nonnull)  NSNumber*  createdTime;

/// Cycle
@property (strong,nonatomic,nonnull)  NSNumber*  cycle;

/// DefaultSource
@property (strong,nonatomic,nonnull)  NSString*  defaultSource;

/// DnsOption
@property (strong,nonatomic,nonnull)  SiteMonitorDnsOption*  dnsOption;

/// Enabled
@property (strong,nonatomic,nonnull)  NSString*  enabled;

/// FtpOption
@property (strong,nonatomic,nonnull)  SiteMonitorFtpOption*  ftpOption;

/// HawkeyeId
@property (strong,nonatomic,nonnull)  NSNumber*  hawkeyeId;

/// HttpOption
@property (strong,nonatomic,nonnull)  SiteMonitorHttpOption*  httpOption;

/// Id
@property (strong,nonatomic,nonnull)  NSString*  idValue;

/// IsDeleted
@property (strong,nonatomic,nonnull)  NSString*  isDeleted;

/// Name
@property (strong,nonatomic,nonnull)  NSString*  name;

/// Pin
@property (strong,nonatomic,nonnull)  NSString*  pin;

/// PingOption
@property (strong,nonatomic,nonnull)  SiteMonitorPingOption*  pingOption;

/// Pop3Option
@property (strong,nonatomic,nonnull)  SiteMonitorPop3Option*  pop3Option;

/// Port
@property (strong,nonatomic,nonnull)  NSString*  port;

/// SmtpOption
@property (strong,nonatomic,nonnull)  SiteMonitorSmtpOption*  smtpOption;

/// Source
@property (strong,nonatomic,nonnull)  NSArray<SiteMonitorSource*>*  source;

/// Stats
@property (strong,nonatomic,nonnull)  NSMutableDictionary<NSString*,NSObject*>*  stats;

/// 可选值：HTTP、PING 、TCP 、UDP、DNS、SMTP、POP3和FTP
@property (strong,nonatomic,nonnull)  NSString*  taskType;

/// TcpOption
@property (strong,nonatomic,nonnull)  SiteMonitorTcpOption*  tcpOption;

/// UdpOption
@property (strong,nonatomic,nonnull)  SiteMonitorUdpOption*  udpOption;

/// UpdatedTime
@property (strong,nonatomic,nonnull)  NSNumber*  updatedTime;


-(id) initWithAddress:(NSString*) address
    advanceChecked:(NSString*)advanceChecked
    createdTime:(NSNumber*)createdTime
    cycle:(NSNumber*)cycle
    defaultSource:(NSString*)defaultSource
    dnsOption:(SiteMonitorDnsOption*)dnsOption
    enabled:(NSString*)enabled
    ftpOption:(SiteMonitorFtpOption*)ftpOption
    hawkeyeId:(NSNumber*)hawkeyeId
    httpOption:(SiteMonitorHttpOption*)httpOption
    idValue:(NSString*)idValue
    isDeleted:(NSString*)isDeleted
    name:(NSString*)name
    pin:(NSString*)pin
    pingOption:(SiteMonitorPingOption*)pingOption
    pop3Option:(SiteMonitorPop3Option*)pop3Option
    port:(NSString*)port
    smtpOption:(SiteMonitorSmtpOption*)smtpOption
    source:(NSArray<SiteMonitorSource*>*)source
    stats:(NSMutableDictionary<NSString*,NSObject*>*)stats
    taskType:(NSString*)taskType
    tcpOption:(SiteMonitorTcpOption*)tcpOption
    udpOption:(SiteMonitorUdpOption*)udpOption
    updatedTime:(NSNumber*)updatedTime;
-(NSMutableDictionary*) dictionary;

-(id) initWithDic:(NSDictionary*)dictionary;                    
@end
@interface MetricData :NSObject

/// Data
@property (strong,nonatomic,nonnull)  NSArray<DataPoint*>*  data;

/// Metric
@property (strong,nonatomic,nonnull)  Metric*  metric;

/// Tags
@property (strong,nonatomic,nonnull)  NSArray<Tag*>*  tags;


-(id) initWithData:(NSArray<DataPoint*>*) data
    metric:(Metric*)metric
    tags:(NSArray<Tag*>*)tags;
-(NSMutableDictionary*) dictionary;

-(id) initWithDic:(NSDictionary*)dictionary;                    
@end
@interface BasicRule :NSObject

/// 统计方法，必须与定义的metric一致，可选值列表：avg,sum,max,min
@property (strong,nonatomic,nonnull)  NSString*  calculation;

/// 降采样函数
@property (strong,nonatomic,nonnull)  NSString*  downSample;

/// 监控项唯一标识，可根据DescribeMetricsForCreateAlarm接口查询各产品线可用的监控项（创建规则时使用Metric字段）。格式：metric:downsample
@property (strong,nonatomic,nonnull)  NSString*  metric;

/// NoticeLevel
@property (strong,nonatomic,nonnull)  NoticeLevel*  noticeLevel;

/// 报警比较符，只能为以下几种lte(&lt;&#x3D;),lt(&lt;),gt(&gt;),gte(&gt;&#x3D;),eq(&#x3D;&#x3D;),ne(!&#x3D;)
@property (strong,nonatomic,nonnull)  NSString*  operation;

/// 查询指标的周期，单位为分钟,目前支持的取值：1,2，5，10,15，30，60
@property (strong,nonatomic,nonnull)  NSNumber*  period;

/// 报警阈值，目前只开放数值类型功能
@property (strong,nonatomic,nonnull)  NSNumber*  threshold;

/// 连续探测几次都满足阈值条件时报警，可选值:1,2,3,5,10,15,30,60
@property (strong,nonatomic,nonnull)  NSNumber*  times;


-(id) initWithCalculation:(NSString*) calculation
    downSample:(NSString*)downSample
    metric:(NSString*)metric
    noticeLevel:(NoticeLevel*)noticeLevel
    operation:(NSString*)operation
    period:(NSNumber*)period
    threshold:(NSNumber*)threshold
    times:(NSNumber*)times;
-(NSMutableDictionary*) dictionary;

-(id) initWithDic:(NSDictionary*)dictionary;                    
@end
@interface CreateProbeTaskParam :NSObject

/// 探测地址，探测类型为http：内容为url（校验http或https头）；探测类型为telnet：内容为ip或域名（只允许中英文 、数字、中划线（-）、小数点（.）、开头及结尾均不能含有“-”）
@property (strong,nonatomic,nonnull)  NSString*  address;

/// http body：选择探测类型为1&#x3D;http时有效，最长不超过1024字节
   /// in: query
@property (strong,nonatomic,nonnull)  NSString*  httpBody;

/// http cookie：选择探测类型为1&#x3D;http时有效，最大允许20个key、value对，最长不超过1024字节
@property (strong,nonatomic,nonnull)  NSArray<KeyValue*>*  httpCookie;

/// http header：选择探测类型为1&#x3D;http时有效，最大允许20个key、value对，最长不超过1024字节
@property (strong,nonatomic,nonnull)  NSArray<KeyValue*>*  httpHeader;

/// http探测方法：选择探测类型为1&#x3D;http时有效，默认值为1&#x3D;get，可选值：1:get、2:post、3:head
@property (strong,nonatomic,nonnull)  NSNumber*  httpType;

/// task名称，不允许重复，长度不超过32字符，只允许中英文、数字、下划线_、中划线-, [0-9][a-z] [A-Z] [- _ ]
@property (strong,nonatomic,nonnull)  NSString*  name;

/// 探测端口，探测类型为telnet时必填，取值范围 [1-65535]，http类型忽略该参数
   /// in: query
@property (strong,nonatomic,nonnull)  NSNumber*  port;

/// 探测类型：1&#x3D;http、2&#x3D;telnet
@property (strong,nonatomic,nonnull)  NSNumber*  probeType;

/// 探测源（发起对探测目标探测的云主机，需安装相应的agent才能探测）
@property (strong,nonatomic,nonnull)  NSArray<Probe*>*  probes;

/// 探测目标id：该探测对象的uuid，任务类型为2：rds、3：redis时必填，
@property (strong,nonatomic,nonnull)  NSString*  targetId;

/// 探测目标region：该探测对象所在region，任务类型为2：rds、3：redis时必填
   /// in: query
@property (strong,nonatomic,nonnull)  NSString*  targetRegion;

/// task类型：1&#x3D;url/ip、2&#x3D;RDS、3&#x3D;redis
@property (strong,nonatomic,nonnull)  NSNumber*  taskType;


-(id) initWithAddress:(NSString*) address
    httpBody:(NSString*)httpBody
    httpCookie:(NSArray<KeyValue*>*)httpCookie
    httpHeader:(NSArray<KeyValue*>*)httpHeader
    httpType:(NSNumber*)httpType
    name:(NSString*)name
    port:(NSNumber*)port
    probeType:(NSNumber*)probeType
    probes:(NSArray<Probe*>*)probes
    targetId:(NSString*)targetId
    targetRegion:(NSString*)targetRegion
    taskType:(NSNumber*)taskType;
-(NSMutableDictionary*) dictionary;

-(id) initWithDic:(NSDictionary*)dictionary;                    
@end
@interface CreateProbeTaskSpec :NSObject

/// 幂等性校验参数,最长36位
@property (strong,nonatomic,nonnull)  NSString*  clientToken;

/// CreateProbeTaskSpecValue
@property (strong,nonatomic,nonnull)  CreateProbeTaskParam*  createProbeTaskSpecValue;


-(id) initWithClientToken:(NSString*) clientToken
    createProbeTaskSpecValue:(CreateProbeTaskParam*)createProbeTaskSpecValue;
-(NSMutableDictionary*) dictionary;

-(id) initWithDic:(NSDictionary*)dictionary;                    
@end
@interface UpdateSiteMonitorSpec :NSObject

/// 地址
@property (strong,nonatomic,nonnull)  NSString*  address;

/// AdvanceChecked
@property (strong,nonatomic,nonnull)  NSString*  advanceChecked;

/// CreatedTime
@property (strong,nonatomic,nonnull)  NSNumber*  createdTime;

/// 探测频率
@property (strong,nonatomic,nonnull)  NSNumber*  cycle;

/// DefaultSource
@property (strong,nonatomic,nonnull)  NSString*  defaultSource;

/// DnsOption
@property (strong,nonatomic,nonnull)  SiteMonitorDnsOption*  dnsOption;

/// Enabled
@property (strong,nonatomic,nonnull)  NSString*  enabled;

/// FtpOption
@property (strong,nonatomic,nonnull)  SiteMonitorFtpOption*  ftpOption;

/// HawkeyeId
@property (strong,nonatomic,nonnull)  NSNumber*  hawkeyeId;

/// HttpOption
@property (strong,nonatomic,nonnull)  SiteMonitorHttpOption*  httpOption;

/// Id
@property (strong,nonatomic,nonnull)  NSString*  idValue;

/// IsDeleted
@property (strong,nonatomic,nonnull)  NSString*  isDeleted;

/// 任务名称
@property (strong,nonatomic,nonnull)  NSString*  name;

/// Pin
@property (strong,nonatomic,nonnull)  NSString*  pin;

/// PingOption
@property (strong,nonatomic,nonnull)  SiteMonitorPingOption*  pingOption;

/// Pop3Option
@property (strong,nonatomic,nonnull)  SiteMonitorPop3Option*  pop3Option;

/// 端口
@property (strong,nonatomic,nonnull)  NSString*  port;

/// SmtpOption
@property (strong,nonatomic,nonnull)  SiteMonitorSmtpOption*  smtpOption;

/// 探测源
@property (strong,nonatomic,nonnull)  NSArray<SiteMonitorSource*>*  source;

/// Stats
@property (strong,nonatomic,nonnull)  NSMutableDictionary<NSString*,NSObject*>*  stats;

/// 任务类型，可选值：HTTP、PING 、TCP 、UDP、DNS、SMTP、POP3和FTP
@property (strong,nonatomic,nonnull)  NSString*  taskType;

/// TcpOption
@property (strong,nonatomic,nonnull)  SiteMonitorTcpOption*  tcpOption;

/// UdpOption
@property (strong,nonatomic,nonnull)  SiteMonitorUdpOption*  udpOption;

/// UpdatedTime
@property (strong,nonatomic,nonnull)  NSNumber*  updatedTime;


-(id) initWithAddress:(NSString*) address
    advanceChecked:(NSString*)advanceChecked
    createdTime:(NSNumber*)createdTime
    cycle:(NSNumber*)cycle
    defaultSource:(NSString*)defaultSource
    dnsOption:(SiteMonitorDnsOption*)dnsOption
    enabled:(NSString*)enabled
    ftpOption:(SiteMonitorFtpOption*)ftpOption
    hawkeyeId:(NSNumber*)hawkeyeId
    httpOption:(SiteMonitorHttpOption*)httpOption
    idValue:(NSString*)idValue
    isDeleted:(NSString*)isDeleted
    name:(NSString*)name
    pin:(NSString*)pin
    pingOption:(SiteMonitorPingOption*)pingOption
    pop3Option:(SiteMonitorPop3Option*)pop3Option
    port:(NSString*)port
    smtpOption:(SiteMonitorSmtpOption*)smtpOption
    source:(NSArray<SiteMonitorSource*>*)source
    stats:(NSMutableDictionary<NSString*,NSObject*>*)stats
    taskType:(NSString*)taskType
    tcpOption:(SiteMonitorTcpOption*)tcpOption
    udpOption:(SiteMonitorUdpOption*)udpOption
    updatedTime:(NSNumber*)updatedTime;
-(NSMutableDictionary*) dictionary;

-(id) initWithDic:(NSDictionary*)dictionary;                    
@end

@interface EnableSiteMonitorSpec :NSObject

/// List
@property (strong,nonatomic,nonnull)  NSArray<EnableSiteMonitorReqItem*>*  list;


-(id) initWithList:(NSArray<EnableSiteMonitorReqItem*>*) list;
-(NSMutableDictionary*) dictionary;

-(id) initWithDic:(NSDictionary*)dictionary;                    
@end
@interface CreateSiteMonitorSpec :NSObject

/// 地址
@property (strong,nonatomic,nonnull)  NSString*  address;

/// AdvanceChecked
@property (strong,nonatomic,nonnull)  NSString*  advanceChecked;

/// CreatedTime
@property (strong,nonatomic,nonnull)  NSNumber*  createdTime;

/// 探测频率
@property (strong,nonatomic,nonnull)  NSNumber*  cycle;

/// DefaultSource
@property (strong,nonatomic,nonnull)  NSString*  defaultSource;

/// DnsOption
@property (strong,nonatomic,nonnull)  SiteMonitorDnsOption*  dnsOption;

/// Enabled
@property (strong,nonatomic,nonnull)  NSString*  enabled;

/// FtpOption
@property (strong,nonatomic,nonnull)  SiteMonitorFtpOption*  ftpOption;

/// HawkeyeId
@property (strong,nonatomic,nonnull)  NSNumber*  hawkeyeId;

/// HttpOption
@property (strong,nonatomic,nonnull)  SiteMonitorHttpOption*  httpOption;

/// Id
@property (strong,nonatomic,nonnull)  NSString*  idValue;

/// IsDeleted
@property (strong,nonatomic,nonnull)  NSString*  isDeleted;

/// 任务名称
@property (strong,nonatomic,nonnull)  NSString*  name;

/// Pin
@property (strong,nonatomic,nonnull)  NSString*  pin;

/// PingOption
@property (strong,nonatomic,nonnull)  SiteMonitorPingOption*  pingOption;

/// Pop3Option
@property (strong,nonatomic,nonnull)  SiteMonitorPop3Option*  pop3Option;

/// 端口
@property (strong,nonatomic,nonnull)  NSString*  port;

/// SmtpOption
@property (strong,nonatomic,nonnull)  SiteMonitorSmtpOption*  smtpOption;

/// 探测源
@property (strong,nonatomic,nonnull)  NSArray<SiteMonitorSource*>*  source;

/// Stats
@property (strong,nonatomic,nonnull)  NSMutableDictionary<NSString*,NSObject*>*  stats;

/// 任务类型，可选值：HTTP、PING 、TCP 、UDP、DNS、SMTP、POP3和FTP
@property (strong,nonatomic,nonnull)  NSString*  taskType;

/// TcpOption
@property (strong,nonatomic,nonnull)  SiteMonitorTcpOption*  tcpOption;

/// UdpOption
@property (strong,nonatomic,nonnull)  SiteMonitorUdpOption*  udpOption;

/// UpdatedTime
@property (strong,nonatomic,nonnull)  NSNumber*  updatedTime;


-(id) initWithAddress:(NSString*) address
    advanceChecked:(NSString*)advanceChecked
    createdTime:(NSNumber*)createdTime
    cycle:(NSNumber*)cycle
    defaultSource:(NSString*)defaultSource
    dnsOption:(SiteMonitorDnsOption*)dnsOption
    enabled:(NSString*)enabled
    ftpOption:(SiteMonitorFtpOption*)ftpOption
    hawkeyeId:(NSNumber*)hawkeyeId
    httpOption:(SiteMonitorHttpOption*)httpOption
    idValue:(NSString*)idValue
    isDeleted:(NSString*)isDeleted
    name:(NSString*)name
    pin:(NSString*)pin
    pingOption:(SiteMonitorPingOption*)pingOption
    pop3Option:(SiteMonitorPop3Option*)pop3Option
    port:(NSString*)port
    smtpOption:(SiteMonitorSmtpOption*)smtpOption
    source:(NSArray<SiteMonitorSource*>*)source
    stats:(NSMutableDictionary<NSString*,NSObject*>*)stats
    taskType:(NSString*)taskType
    tcpOption:(SiteMonitorTcpOption*)tcpOption
    udpOption:(SiteMonitorUdpOption*)udpOption
    updatedTime:(NSNumber*)updatedTime;
-(NSMutableDictionary*) dictionary;

-(id) initWithDic:(NSDictionary*)dictionary;                    
@end

@interface DescribedAlarmHistory :NSObject

/// 报警规则ID
@property (strong,nonatomic,nonnull)  NSString*  alarmId;

/// 资源维度
@property (strong,nonatomic,nonnull)  NSString*  dimension;

/// 资源维度名称
@property (strong,nonatomic,nonnull)  NSString*  dimensionName;

/// 告警持续次数
@property (strong,nonatomic,nonnull)  NSNumber*  durationTimes;

/// 告警持续时间，单位分钟
@property (strong,nonatomic,nonnull)  NSNumber*  noticeDurationTime;

/// 用于前端显示的‘触发告警级别’。从低到高分别为‘普通’, ‘紧急’, ‘严重’
@property (strong,nonatomic,nonnull)  NSString*  noticeLevel;

/// 触发的告警级别。从低到高分别为‘common’, ‘critical’, ‘fatal’
@property (strong,nonatomic,nonnull)  NSString*  noticeLevelTriggered;

/// 告警时间
@property (strong,nonatomic,nonnull)  NSString*  noticeTime;

/// 资源类型
@property (strong,nonatomic,nonnull)  NSString*  product;

/// 资源类型名称
@property (strong,nonatomic,nonnull)  NSString*  productName;

/// 告警通知人
@property (strong,nonatomic,nonnull)  NSArray<NoticeReceiver*>*  receivers;

/// 资源Id对应的region
@property (strong,nonatomic,nonnull)  NSString*  region;

/// 资源Id
@property (strong,nonatomic,nonnull)  NSString*  resourceId;

/// Rule
@property (strong,nonatomic,nonnull)  BasicRuleDetail*  rule;

/// 规则类型
@property (strong,nonatomic,nonnull)  NSString*  ruleType;

/// 告警类型  1-告警恢复  2-告警 4-数据不足
@property (strong,nonatomic,nonnull)  NSNumber*  status;

/// 资源tags
@property (strong,nonatomic,nonnull)  NSMutableDictionary<NSString*,NSString*>*  tags;

/// 告警值
@property (strong,nonatomic,nonnull)  NSNumber*  value;


-(id) initWithAlarmId:(NSString*) alarmId
    dimension:(NSString*)dimension
    dimensionName:(NSString*)dimensionName
    durationTimes:(NSNumber*)durationTimes
    noticeDurationTime:(NSNumber*)noticeDurationTime
    noticeLevel:(NSString*)noticeLevel
    noticeLevelTriggered:(NSString*)noticeLevelTriggered
    noticeTime:(NSString*)noticeTime
    product:(NSString*)product
    productName:(NSString*)productName
    receivers:(NSArray<NoticeReceiver*>*)receivers
    region:(NSString*)region
    resourceId:(NSString*)resourceId
    rule:(BasicRuleDetail*)rule
    ruleType:(NSString*)ruleType
    status:(NSNumber*)status
    tags:(NSMutableDictionary<NSString*,NSString*>*)tags
    value:(NSNumber*)value;
-(NSMutableDictionary*) dictionary;

-(id) initWithDic:(NSDictionary*)dictionary;                    
@end
@interface UpdateProbeTaskSpec :NSObject

/// http body：选择探测类型为1&#x3D;http时有效，最长不超过1024字节
@property (strong,nonatomic,nonnull)  NSString*  httpBody;

/// http cookie：选择探测类型为1&#x3D;http时有效，最大允许20个key、value对，最长不超过1024字节
@property (strong,nonatomic,nonnull)  NSArray<KeyValue*>*  httpCookie;

/// http header：选择探测类型为1&#x3D;http时有效，最大允许20个key、value对，最长不超过1024字节
@property (strong,nonatomic,nonnull)  NSArray<KeyValue*>*  httpHeader;

/// http探测方法,可选值：1:get、2:post、3:head
@property (strong,nonatomic,nonnull)  NSNumber*  httpType;

/// task名称，不允许重复，长度不超过32字符，只允许中英文、数字、下划线_、中划线-, [0-9][a-z] [A-Z] [- _ ]
@property (strong,nonatomic,nonnull)  NSString*  name;

/// 探测源（发起对探测目标探测的云主机，需安装相应的agent才能探测）
@property (strong,nonatomic,nonnull)  NSArray<Probe*>*  probes;


-(id) initWithHttpBody:(NSString*) httpBody
    httpCookie:(NSArray<KeyValue*>*)httpCookie
    httpHeader:(NSArray<KeyValue*>*)httpHeader
    httpType:(NSNumber*)httpType
    name:(NSString*)name
    probes:(NSArray<Probe*>*)probes;
-(NSMutableDictionary*) dictionary;

-(id) initWithDic:(NSDictionary*)dictionary;                    
@end
@interface ResourceOption :NSObject

/// 指定具体资源ID设置报警规则，每次最多100个。优先resourceItems生效
@property (strong,nonatomic,nonnull)  NSArray<ResourceItem*>*  resourceItems;

/// TagsOption
@property (strong,nonatomic,nonnull)  TagsOption*  tagsOption;


-(id) initWithResourceItems:(NSArray<ResourceItem*>*) resourceItems
    tagsOption:(TagsOption*)tagsOption;
-(NSMutableDictionary*) dictionary;

-(id) initWithDic:(NSDictionary*)dictionary;                    
@end
@interface RuleOptionDetail :NSObject

/// 规则触发条件,与模块参数同时指定时，优先使用rules
@property (strong,nonatomic,nonnull)  NSArray<BasicRuleDetail*>*  rules;

/// TemplateOption
@property (strong,nonatomic,nonnull)  TemplateOption*  templateOption;


-(id) initWithRules:(NSArray<BasicRuleDetail*>*) rules
    templateOption:(TemplateOption*)templateOption;
-(NSMutableDictionary*) dictionary;

-(id) initWithDic:(NSDictionary*)dictionary;                    
@end
@interface RuleOption :NSObject

/// 规则触发条件,与模块参数同时指定时，优先使用rules
@property (strong,nonatomic,nonnull)  NSArray<BasicRule*>*  rules;

/// TemplateOption
@property (strong,nonatomic,nonnull)  TemplateOption*  templateOption;


-(id) initWithRules:(NSArray<BasicRule*>*) rules
    templateOption:(TemplateOption*)templateOption;
-(NSMutableDictionary*) dictionary;

-(id) initWithDic:(NSDictionary*)dictionary;                    
@end

@interface StatsItem :NSObject

/// AggregateFunc
@property (strong,nonatomic,nonnull)  NSString*  aggregateFunc;

/// AggregateIntervalMin
@property (strong,nonatomic,nonnull)  NSNumber*  aggregateIntervalMin;

/// CalculateUnit
@property (strong,nonatomic,nonnull)  NSString*  calculateUnit;

/// Dps
@property (strong,nonatomic,nonnull)  NSArray<DataPoint*>*  dps;

/// Metric
@property (strong,nonatomic,nonnull)  NSString*  metric;

/// MetricName
@property (strong,nonatomic,nonnull)  NSString*  metricName;

/// Resource
@property (strong,nonatomic,nonnull)  Resource*  resource;

/// Tags
@property (strong,nonatomic,nonnull)  NSMutableDictionary<NSString*,NSString*>*  tags;


-(id) initWithAggregateFunc:(NSString*) aggregateFunc
    aggregateIntervalMin:(NSNumber*)aggregateIntervalMin
    calculateUnit:(NSString*)calculateUnit
    dps:(NSArray<DataPoint*>*)dps
    metric:(NSString*)metric
    metricName:(NSString*)metricName
    resource:(Resource*)resource
    tags:(NSMutableDictionary<NSString*,NSString*>*)tags;
-(NSMutableDictionary*) dictionary;

-(id) initWithDic:(NSDictionary*)dictionary;
@end
@interface UpdateAlarmResourcesSpec :NSObject

/// 操作类型,默认为1，说明：1-覆盖  2-追加 3-删除
@property (strong,nonatomic,nonnull)  NSNumber*  operatorType;

/// ResourceOption
@property (strong,nonatomic,nonnull)  ResourceOption*  resourceOption;


-(id) initWithOperatorType:(NSNumber*) operatorType
    resourceOption:(ResourceOption*)resourceOption;
-(NSMutableDictionary*) dictionary;

-(id) initWithDic:(NSDictionary*)dictionary;
@end

@interface CreateAlarmSpec :NSObject

/// 弹性伸缩组Id。注：仅ag\asg产品线内部使用
@property (strong,nonatomic,nonnull)  NSString*  autoScalingPolicyId;

/// 告警通知联系人
@property (strong,nonatomic,nonnull)  NSArray<BaseContact*>*  baseContact;

/// 幂等性校验参数,最长36位,若两个请求clientToken相等，则返回第一次创建的规则id，只创建一次规则
@property (strong,nonatomic,nonnull)  NSString*  clientToken;

/// 资源维度，可用的维度请使用 describeProductsForAlarm接口查询
@property (strong,nonatomic,nonnull)  NSString*  dimension;

/// 是否启用, 1表示启用规则，0表示禁用规则，默认为1
@property (strong,nonatomic,nonnull)  NSNumber*  enabled;

/// 通知策略
@property (strong,nonatomic,nonnull)  NSArray<NoticeOption*>*  noticeOption;

/// 资源类型, 可用的资源类型列表请使用 describeProductsForAlarm接口查询。
@property (strong,nonatomic,nonnull)  NSString*  product;

/// ResourceOption
@property (strong,nonatomic,nonnull)  ResourceOption*  resourceOption;

/// 规则名称，规则名称，最大长度42个字符，只允许中英文、数字、&#39;&#39;-&#39;&#39;和&quot;_&quot;
@property (strong,nonatomic,nonnull)  NSString*  ruleName;

/// RuleOption
@property (strong,nonatomic,nonnull)  RuleOption*  ruleOption;

/// 规则类型, 默认为resourceMonitor
@property (strong,nonatomic,nonnull)  NSString*  ruleType;

/// 资源维度，指定监控数据实例的维度标签,如resourceId&#x3D;id。(请确认资源的监控数据带有该标签，否则规则会报数据不足)
@property (strong,nonatomic,nonnull)  NSMutableDictionary<NSString*,NSString*>*  tags;

/// WebHookOption
@property (strong,nonatomic,nonnull)  WebHookOption*  webHookOption;


-(id) initWithAutoScalingPolicyId:(NSString*) autoScalingPolicyId
    baseContact:(NSArray<BaseContact*>*)baseContact
    clientToken:(NSString*)clientToken
    dimension:(NSString*)dimension
    enabled:(NSNumber*)enabled
    noticeOption:(NSArray<NoticeOption*>*)noticeOption
    product:(NSString*)product
    resourceOption:(ResourceOption*)resourceOption
    ruleName:(NSString*)ruleName
    ruleOption:(RuleOption*)ruleOption
    ruleType:(NSString*)ruleType
    tags:(NSMutableDictionary<NSString*,NSString*>*)tags
    webHookOption:(WebHookOption*)webHookOption;
-(NSMutableDictionary*) dictionary;

-(id) initWithDic:(NSDictionary*)dictionary;
@end

@interface DescribeGroupAlarm :NSObject

/// 报警规则ID
@property (strong,nonatomic,nonnull)  NSString*  alarmId;

/// 规则状态，当一个规则下同时存在报警、数据不足、正常的资源时，规则状态按 报警&gt;数据不足&gt;正常的优先级展示
   /// 监控项状态：-1 未启用 1正常，2告警，4数据不足
@property (strong,nonatomic,nonnull)  NSNumber*  alarmStatus;

/// 规则的状态列表,可能同时存在多个：1正常，2告警，4数据不足
@property (strong,nonatomic,nonnull)  NSArray<NSNumber*>*  alarmStatusList;

/// 创建时间
@property (strong,nonatomic,nonnull)  NSString*  createTime;

/// 资源维度
@property (strong,nonatomic,nonnull)  NSString*  dimension;

/// 资源维度名称
@property (strong,nonatomic,nonnull)  NSString*  dimensionName;

/// 是否启用, 1表示启用规则，0表示禁用规则，默认为1
@property (strong,nonatomic,nonnull)  NSNumber*  enabled;

/// 资源类型
@property (strong,nonatomic,nonnull)  NSString*  product;

/// 资源类型名称
@property (strong,nonatomic,nonnull)  NSString*  productName;

/// ResourceOption
@property (strong,nonatomic,nonnull)  ResourceOption*  resourceOption;

/// 规则名称，规则名称，最大长度42个字符，只允许中英文、数字、&#39;&#39;-&#39;&#39;和&quot;_&quot;
@property (strong,nonatomic,nonnull)  NSString*  ruleName;

/// RuleOption
@property (strong,nonatomic,nonnull)  RuleOptionDetail*  ruleOption;

/// 规则类型, 默认为resourceMonitor
@property (strong,nonatomic,nonnull)  NSString*  ruleType;

/// 规则版本  v1  v2
@property (strong,nonatomic,nonnull)  NSString*  ruleVersion;

/// 资源维度，指定监控数据实例的维度标签,如resourceId&#x3D;id。(请确认资源的监控数据带有该标签，否则规则会报数据不足)
@property (strong,nonatomic,nonnull)  NSMutableDictionary<NSString*,NSString*>*  tags;


-(id) initWithAlarmId:(NSString*) alarmId
    alarmStatus:(NSNumber*)alarmStatus
    alarmStatusList:(NSArray<NSNumber*>*)alarmStatusList
    createTime:(NSString*)createTime
    dimension:(NSString*)dimension
    dimensionName:(NSString*)dimensionName
    enabled:(NSNumber*)enabled
    product:(NSString*)product
    productName:(NSString*)productName
    resourceOption:(ResourceOption*)resourceOption
    ruleName:(NSString*)ruleName
    ruleOption:(RuleOptionDetail*)ruleOption
    ruleType:(NSString*)ruleType
    ruleVersion:(NSString*)ruleVersion
    tags:(NSMutableDictionary<NSString*,NSString*>*)tags;
-(NSMutableDictionary*) dictionary;

-(id) initWithDic:(NSDictionary*)dictionary;                    
@end
@interface UpdateAlarmSpec :NSObject

/// 弹性伸缩组Id。注：仅ag\asg产品线内部使用
@property (strong,nonatomic,nonnull)  NSString*  autoScalingPolicyId;

/// 告警通知联系人
@property (strong,nonatomic,nonnull)  NSArray<BaseContact*>*  baseContact;

/// 资源维度，可用的维度请使用 describeProductsForAlarm接口查询
@property (strong,nonatomic,nonnull)  NSString*  dimension;

/// 是否启用, 1表示启用规则，0表示禁用规则，默认为1
@property (strong,nonatomic,nonnull)  NSNumber*  enabled;

/// 通知策略
@property (strong,nonatomic,nonnull)  NSArray<NoticeOption*>*  noticeOption;

/// 资源类型, 可用的资源类型列表请使用 describeProductsForAlarm接口查询。
@property (strong,nonatomic,nonnull)  NSString*  product;

/// ResourceOption
@property (strong,nonatomic,nonnull)  ResourceOption*  resourceOption;

/// 规则名称，规则名称，最大长度42个字符，只允许中英文、数字、&#39;&#39;-&#39;&#39;和&quot;_&quot;
@property (strong,nonatomic,nonnull)  NSString*  ruleName;

/// RuleOption
@property (strong,nonatomic,nonnull)  RuleOption*  ruleOption;

/// 规则类型, 默认为resourceMonitor
@property (strong,nonatomic,nonnull)  NSString*  ruleType;

/// 资源维度，指定监控数据实例的维度标签,如resourceId&#x3D;id。(请确认资源的监控数据带有该标签，否则规则会报数据不足)
@property (strong,nonatomic,nonnull)  NSMutableDictionary<NSString*,NSString*>*  tags;

/// WebHookOption
@property (strong,nonatomic,nonnull)  WebHookOption*  webHookOption;


-(id) initWithAutoScalingPolicyId:(NSString*) autoScalingPolicyId
    baseContact:(NSArray<BaseContact*>*)baseContact
    dimension:(NSString*)dimension
    enabled:(NSNumber*)enabled
    noticeOption:(NSArray<NoticeOption*>*)noticeOption
    product:(NSString*)product
    resourceOption:(ResourceOption*)resourceOption
    ruleName:(NSString*)ruleName
    ruleOption:(RuleOption*)ruleOption
    ruleType:(NSString*)ruleType
    tags:(NSMutableDictionary<NSString*,NSString*>*)tags
    webHookOption:(WebHookOption*)webHookOption;
-(NSMutableDictionary*) dictionary;

-(id) initWithDic:(NSDictionary*)dictionary;                    
@end

#endif /* DetectionModel_h */
